package com.shanjupay.merchant.api;

import com.shanjupay.common.domain.BusinessException;
import com.shanjupay.merchant.api.dto.MerchantDTO;
import com.shanjupay.merchant.api.dto.StaffDTO;
import com.shanjupay.merchant.api.dto.StoreDTO;

/**
 * 商户服务Service接口
 * Created by Administrator.
 */
public interface MerchantService {

    /**
     * 根据 id查询商户
     * @param id
     * @return
     */
    public MerchantDTO queryMerchantById(Long id);

    /**
     * 注册商户服务接口，接收账号、密码和手机号，为了可扩展性使用MerchantDTO接收数据
     * @param merchantDTO 商户注册信息
     * @return 注册成功的商户信息
     */
    MerchantDTO addMerchant(MerchantDTO merchantDTO) throws BusinessException;

    /**
     * 资质申请
     * @param merchantId 商户id
     * @param merchantDTO 资质申请信息
     * @throws BusinessException
     */
    void applyMerchantv(Long merchantId,MerchantDTO merchantDTO) throws BusinessException;

    /**
     * 新增门店
     * @param storeDTO 新增门店信息
     * @return 新增成功后的门店信息
     * @throws BusinessException
     */
    StoreDTO createStore(StoreDTO storeDTO) throws BusinessException;

    /**
     * 新增员工
     * @param staffDTO 新增员工信息
     * @return 新增成功后的员工信息
     * @throws BusinessException
     */
    StaffDTO createStaff(StaffDTO staffDTO) throws BusinessException;

    /**
     * 将员工设置为门店的管理员
     * @param storeId 员工id
     * @param staffId 门店id
     * @throws BusinessException
     */
    void bindStaffToStore(Long storeId,Long staffId) throws BusinessException;

    /**
     * 根据租户查询商户
     * @param tenantId 租户id
     * @return 商户信息
     * @throws BusinessException
     */
    MerchantDTO queryMerchantByTenantId(Long tenantId) throws BusinessException;
}
